package process

import (
	"fmt"
)

// MyUserMgr 变量->全局变量
var MyUserMgr *UserMgr

type UserMgr struct {
	OnlineUsers map[int]*UserProcess
}

// init
//
//	@Description: 初始化
func init() {
	MyUserMgr = &UserMgr{
		OnlineUsers: make(map[int]*UserProcess, 1024),
	}
}

// AddOnlineUser
//
//	@Description:
//	@receiver this
//	@param u
func (this *UserMgr) AddOnlineUser(u *UserProcess) {
	this.OnlineUsers[u.UserId] = u
}

// DeleteOnlineUser
//
//	@Description:
//	@receiver this
//	@param userId
func (this *UserMgr) DeleteOnlineUser(userId int) {
	delete(this.OnlineUsers, userId)
}

// GetAllOnlineUser
//
//	@Description:
//	@receiver this
//	@return map[int]*userProcess.UserProcess
func (this *UserMgr) GetAllOnlineUser() map[int]*UserProcess {
	return this.OnlineUsers
}

// GetOnlineUserById
//
//	@Description:
//	@receiver this
//	@param userId
//	@return up
//	@return err
func (this *UserMgr) GetOnlineUserById(userId int) (up *UserProcess, err error) {
	up, ok := this.OnlineUsers[userId]
	if !ok {
		err = fmt.Errorf("用户id=%d 不存在", userId)
		return
	}
	return
}
